<?php
/**
 * [LupMisNotAllowedSync]
 * 本代码为系统自动生成代码，请根据自己业务进行修改;
 * 生成时间 2022-02-15 21:16:18;
 * 版权所有 2020-2022 lizhongwen，友情赞助：小白 并保留所有权利;
 * 说明: 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用；不允许对程序代码以任何形式任何目的的再发布;
 * 作者: 中文Lee;
 * 作者主页: http://www.lizhongwen.com;
 * 邮箱: 360811363@qq.com;
 * QQ: 360811363;
 */

namespace application\core;

abstract class BuildMapper
{

    abstract protected static function setMap() : string;

    public static function __callStatic(string $name, array  $arguments = [])
    {
        return self::doMap($name, $arguments);
    }

    public function __call(string $name, array $arguments = [])
    {
        return self::doMap($name, $arguments);
    }

    private static function doMap(string $name, array $arguments = []) {
        $obj = new static();
        $mapIdentifier = $obj->setMap();
        return  Mapper::map($mapIdentifier, $name)->exec($arguments[0] ?? [], $arguments[1] ?? []);
    }

}